package com.example.designpatterns.strategy.payment;

/**
 * 信用卡支付策略
 */
public class CreditCardStrategy implements PaymentStrategy {
    private String name;
    private String cardNumber;
    private String cvv;
    private String expiryDate;
    
    /**
     * 创建信用卡支付策略
     * @param name 持卡人姓名
     * @param cardNumber 卡号
     * @param cvv 安全码
     * @param expiryDate 有效期
     */
    public CreditCardStrategy(String name, String cardNumber, String cvv, String expiryDate) {
        this.name = name;
        this.cardNumber = cardNumber;
        this.cvv = cvv;
        this.expiryDate = expiryDate;
    }
    
    @Override
    public boolean pay(double amount) {
        System.out.println("使用信用卡支付: ¥" + amount);
        System.out.println("卡号: " + maskCardNumber());
        System.out.println("持卡人: " + name);
        // 实际应用中这里会调用支付网关API
        return true;
    }
    
    @Override
    public String getName() {
        return "信用卡支付";
    }
    
    /**
     * 对卡号进行掩码处理，只显示后四位
     * @return 掩码后的卡号
     */
    private String maskCardNumber() {
        if (cardNumber.length() < 4) {
            return "****";
        }
        return "**** **** **** " + cardNumber.substring(cardNumber.length() - 4);
    }
} 